[프로그래머스] 프린터 (파이썬)

문제

문제 링크

풀이

그냥 리스트만 잘 사용하면 단순 구현 문제라 어렵지는 않았다. 관건은 문서를 인쇄해버리거나 맨 뒤에 추가하는 등 이동시켰을때 인덱스를 어떻게 기억할 것이냐인데, 나는 그냥 인덱스만 표시하는 리스트를 따로 만들어서 해결했다.

아니면 enumerate 함수 같은걸 사용해서 (인덱스, 문서) 형태로 튜플로 묶어서 새로운 리스트에 집어넣고 푼 사람들도 많은 것 같다.

from collections import deque

def solution(priorities, location):
    deq = deque(priorities)
    idx = deque([i for i in range(len(deq))])  # 인덱스를 표시해줄 리스트 생성 
    answer = 0

    while deq:
        now = deq.popleft()
        i = idx.popleft()

        if deq:  
        # 주의: 여기서 리스트가 비었는지 검증해주지 않으면 아래 max(deq)에서 런타임에러 발생
            if now >= max(deq): # 남은 문서들 중 now보다 우선순위 높은 문서가 하나도 없다면
                answer += 1  # 인쇄            
                if i == location:
                    return answer
            else: 
                deq.append(now)  # 대기목록 맨 마지막에 넣음  
                idx.append(i)        
        else:
            answer += 1
            return answer    

Written by@[hyem]
Hyem's Dev Note

GitHub